﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Negocio = PSE.Tools.CadastroMensagens.Negocio;
using PSE.Tools.Util.Entidades;

namespace PSE.Tools.CadastroMensagens.Apresentacao
{
    public class Idiomas
    {
        private IApresentacao _apresentacao;
        private Negocio.Idiomas _negocioIdioma;
        public Idiomas(IApresentacao apresentacao, Negocio.Idiomas negocioIdioma)
        {
            _apresentacao = apresentacao;
            _negocioIdioma = negocioIdioma;
        }

        public Entidades.Idioma Obter(string sigla)
        {
            try
            {
                return _negocioIdioma.ObterPorSigla(sigla);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public IList<Entidades.Idioma> Lista()
        {
            try
            {
                return _negocioIdioma.Selecionar();
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public bool Inserir(Entidades.Idioma idioma)
        {
            bool retorno = false;
            try
            {
                _negocioIdioma.Inserir(idioma);
                _apresentacao.EnviarMensagem("Idioma Inserido com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Atualizar(Entidades.Idioma idioma)
        {
            bool retorno = false;
            try
            {
                _negocioIdioma.Atualizar(idioma);
                _apresentacao.EnviarMensagem("Idioma Atualizado com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Excluir(Entidades.Idioma idioma)
        {
            bool retorno = false;
            try
            {
                _negocioIdioma.Excluir(idioma);
                _apresentacao.EnviarMensagem("Idioma Excluído com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }
    }
}